iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0

Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~

在本系列文會延續 Re: 從零改用 .NET MAUI 技術來繼續過去用 Xamarin 技術開發的一個 App : TopStore 使用 .NET MAUI 技術所建立的 TopStore App ,更新 .NET MAUI 在 .NET 6 轉換到 .NET 7 時所需要調整的部分,並持續地的開發 TopStore App 其他需要的功能。

本篇是 Re: 從零續用 .NET MAUI 技術開發過去的一個 App : TopStore 系列 系列文的 EP28。


而由於開始進行新增、編輯 OrderDetail 的資料,有關於處理資料輸入時的格式驗證就不可或缺了。

而在 Re: 從零開始用 Xamarin 技術來復刻過去開發的一個 App : TopStore 的 EP 25 就有針對 PersonDetail 的部分處理過輸入資料的格式驗證;Re: 從零改用 .NET MAUI 技術來繼續過去用 Xamarin 技術開發的一個 App : TopStore 的 EP 29 也有快速處理到 ProductDetail 輸入資料時的資料格式驗證。

這裡也來幫 OrderDetail 處理一下有關資料輸入時的驗證吧~~~

若是沿用過去所使用的 DataAnnotations 機制來處理的話,就找到 Models 底下的 OrderDetail 類別,來掛上相關的 Attritube 限制:

Quantity 屬性掛上如下 Attritube:

[Required(ErrorMessage = "數量為訂單明細必填資料")]
[Range(1, double.MaxValue, ErrorMessage = "必須為 1 以上個數")]

Price 屬性掛上如下 Attritube:

[Required(ErrorMessage = "價格為訂單明細必填資料")]
[Range(0, double.MaxValue, ErrorMessage = "必須為 0 元以上數值")]

完成結果如下圖:
01

接著簡單的調整一下 Pages 底下的 AddOrderPage 與 OrderDetailShowPage 的頁面 UI 設計,需要加上把驗證失敗時的訊息顯示用的 Label:

給 Quantity 用的 Label:

<Label x:Name="QuantityError" IsVisible="False" TextColor="Red" />

給 Price 用的 Label:

<Label x:Name="PriceError" IsVisible="False" TextColor="Red" />

OrderDetailShowPage 完成結果如下圖:
02

當初設計 OrderDetaiShowPage 的時候,Entry 並沒有限制 Keyboard 為數字,補充加入。

AddOrderPage 完成結果如下圖:
03

同樣的要繼續調整 OrderDetailShowPageViewModel 當中的 Save 方法與 AddOrderPageViewModel 當中的 Done 方法。

主要是要在 OrderDetail 的資料要透過 DataService 執行 SaveOrderDetail 方法之前,要再進行資料的輸入驗證,透過以下判斷處理:

var isValid = Utilities.ValidationHelper.IsValid(orderDetail, Shell.Current.CurrentPage);
if (!isValid)
    return;

OrderDetailShowPageViewModel 完成結果如下圖:
04

AddOrderPageViewModel 完成結果如下圖:
05

執行結果看看~~~

OrderDetailShowPage 顯示驗證錯誤的結果如下圖:
06

AddOrderPage 顯示驗證錯誤的結果如下圖:
07


上一篇
EP27
下一篇
EP29
系列文
Re: 從零續用 .NET MAUI 技術開發過去的一個 App : TopStore 系列30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言